home *** CD-ROM | disk | FTP | other *** search
/ Robotics & Artificial Int…3 (Professional Edition) / Robotics & Artificial Intelligence Tools 2003 (Professional Edition).iso / neural network tool and application / nsinstall.exe / data1.cab / DllSys_Files / NSDLL.H < prev   
Encoding:
C/C++ Source or Header  |  2002-03-08  |  4.6 KB  |  166 lines

  1. // Author: Wesley Curtis Lefebvre
  2.  
  3. #ifndef __NSDLL_H__
  4. #define __NSDLL_H__
  5.  
  6. #include "Global.h"
  7.  
  8. static void checkParameterIndices(int *row,int *col)
  9. {
  10.     if (*row > DLL_PARAM_ROWS-1)
  11.         *row = DLL_PARAM_ROWS-1;
  12.     if (*col > DLL_PARAM_COLS-1)
  13.         *col = DLL_PARAM_COLS-1;
  14.     if (*row < 0)
  15.         *row = 0;
  16.     if (*col < 0)
  17.         *col = 0;
  18. }
  19.  
  20. static DLLData *allocDLLInstance(DLLData *oldInstance)
  21. {
  22.     DLLData *data = (DLLData*)malloc(sizeof(DLLData));
  23.     data->weights = NULL;
  24.     data->parameters = NULL;
  25.     data->userData = NULL;
  26.     if (oldInstance) {
  27.         if (oldInstance->weights) {
  28.             data->weights = oldInstance->weights;    
  29.             oldInstance->weights = NULL;
  30.         }    
  31.         if (oldInstance->parameters) {
  32.             data->parameters = oldInstance->parameters;    
  33.             oldInstance->parameters = NULL;
  34.         }    
  35.     }
  36.     return data;
  37. }
  38.  
  39. static void freeDLLInstance(DLLData *instance)
  40. {
  41.     if (instance) {
  42.         if (instance->weights) {
  43.             free(instance->weights);
  44.             instance->weights = NULL;
  45.         }
  46.         if (instance->parameters) {
  47.             free(instance->parameters);
  48.             instance->parameters = NULL;
  49.         }
  50.         free(instance);
  51.     }
  52. }
  53.  
  54. static DLLData *setWeights(DLLData *instance, int numberOfWeights)
  55. {
  56.     if (!instance->weights)
  57.         instance->weights = (DLLWeights*)malloc(sizeof(DLLWeights));
  58.     instance->weights->length = numberOfWeights;
  59.     return instance;
  60. }
  61.  
  62. static DLLData *allocParameters(DLLData *instance)
  63. {
  64.     int i,j;
  65.  
  66.     if (!instance->parameters) {
  67.         DLLParameters *parameters = (DLLParameters*)malloc(sizeof(DLLParameters));
  68.         for (i=0; i<DLL_PARAM_ROWS; i++)
  69.             for (j=0; j<DLL_PARAM_COLS; j++) {
  70.                 strcpy(parameters->parameters[i][j], "");
  71.                 strcpy(parameters->parameterNames[i][j], "");
  72.             }
  73.         instance->parameters = parameters;
  74.     }
  75.     return instance;
  76. }
  77.  
  78. static NSFloat *getWeights(DLLData *instance)
  79. {
  80.     return instance->weights->data;
  81. }
  82.      
  83. static void setUserData(DLLData *instance, void *userData)
  84. {
  85.     instance->userData = userData;
  86. }
  87.  
  88. static void *getUserData(DLLData *instance)
  89. {
  90.     return instance? instance->userData: NULL;
  91. }
  92.      
  93. static void setParameterName(DLLData *instance, int row, int col, char *name, BOOL realloc)
  94. {
  95.     allocParameters(instance);
  96.     checkParameterIndices(&row,&col);
  97.     strcpy(instance->parameters->parameterNames[row][col], name);
  98.     instance->parameters->parameterReallocs[row][col] = realloc;
  99. }
  100.      
  101. static int getIntParameter(DLLData *instance, int row, int col)
  102. {
  103.     int intValue=0;
  104.     checkParameterIndices(&row,&col);
  105.     if (sscanf(instance->parameters->parameters[row][col], "%d", &intValue) == EOF)
  106.         return 0;
  107.     return intValue;
  108. }
  109.      
  110. static NSFloat getFloatParameter(DLLData *instance, int row, int col)
  111. {
  112.     float floatValue=0.0f;
  113.     checkParameterIndices(&row,&col);
  114.     if (sscanf(instance->parameters->parameters[row][col], "%f", &floatValue) == EOF)
  115.         return 0.0f;
  116.     return floatValue;
  117. }
  118.      
  119. static char *getStringParameter(DLLData *instance, int row, int col)
  120. {
  121.     checkParameterIndices(&row,&col);
  122.     return instance->parameters->parameters[row][col];
  123. }
  124.  
  125. static BOOL getBoolParameter(DLLData *instance, int row, int col)
  126. {
  127.     char tempString[128];
  128.     checkParameterIndices(&row,&col);
  129.     strcpy(tempString,instance->parameters->parameters[row][col]);
  130.     return ((tolower(tempString[0]) == 't') && (tolower(tempString[1]) == 'r') && (tolower(tempString[2]) == 'u') && (tolower(tempString[3]) == 'e') && (tolower(tempString[4]) == '\0'));
  131. }
  132.  
  133. static void setIntParameter(DLLData *instance, int row, int col, int intValue, BOOL force)
  134. {
  135.     allocParameters(instance);
  136.     checkParameterIndices(&row,&col);
  137.     if (force || !strcmp(instance->parameters->parameters[row][col],""))
  138.         sprintf(instance->parameters->parameters[row][col], "%d", intValue);
  139. }
  140.      
  141. static void setFloatParameter(DLLData *instance, int row, int col, NSFloat floatValue, BOOL force)
  142. {
  143.     allocParameters(instance);
  144.     checkParameterIndices(&row,&col);
  145.     if (force || !strcmp(instance->parameters->parameters[row][col],""))
  146.         sprintf(instance->parameters->parameters[row][col], "%f", floatValue);
  147. }
  148.      
  149. static void setStringParameter(DLLData *instance, int row, int col, char *stringValue, BOOL force)
  150. {
  151.     allocParameters(instance);
  152.     checkParameterIndices(&row,&col);
  153.     if (force || !strcmp(instance->parameters->parameters[row][col],""))
  154.         sprintf(instance->parameters->parameters[row][col], "%s", stringValue);
  155.  
  156. static void setBoolParameter(DLLData *instance, int row, int col, BOOL boolValue, BOOL force)
  157. {
  158.     allocParameters(instance);
  159.     checkParameterIndices(&row,&col);
  160.     if (force || !strcmp(instance->parameters->parameters[row][col],""))
  161.         sprintf(instance->parameters->parameters[row][col], "%s", boolValue? "TRUE": "FALSE");
  162.  
  163. #endif __NSDLL_H__    
  164.